// pages/me/me.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {
      avatarUrl: '',
      nickName: '点击登录'
    },
    logined: false,   // 用于保存是否已经登录
  }, 

  /** 点击头像，选择图片，更换头像 */
  tapAvatar(){
    if(this.data.logined){  // 如果已经登录，选择头像
      wx.chooseMedia({
        count: 1,
        mediaType: ['image'],
        sizeType: ['compressed'],
        success: (res)=>{
          console.log('选择头像图片', res)
          let path = res.tempFiles[0].tempFilePath
          // 更新userInfo
          let userInfo = this.data.userInfo
          userInfo.avatarUrl = path
          this.setData({ userInfo })
          // 持久化保存图片，需要上传图片至云存储空间
          this.upload(path)
        }
      })
    }
  },

  /** 将path指向的本地文件上传至云存储空间 
   *  path:  wxfile:///tmp/xxxx/asvsadf/abcd.jpg
   */
  upload(path){
    // 截取后缀： houzhui
    let houzhui = path.split('.')[1]   //提取：jpg|png|gif
    let cpath = Math.random()+"_"+Date.now()+"."+houzhui
    wx.cloud.uploadFile({
      filePath: path,   // 本地路径
      cloudPath: cpath,  // 云端路径
      success: (res)=>{
        console.log('上传图片成功', res)
        // 获取上传成功后的图片的访问地址  cloud://协议
        let fileID = res.fileID
        // 需要将fileID存入数据库，更新当前用户的头像路径
        this.updateUserAvatar(fileID)
      }
    })
  }, 

  /** 更新云数据库，将用户头像路径改为fileID */
  updateUserAvatar(fileID){
    let db = wx.cloud.database()
    let id = this.data.userInfo._id
    db.collection('users').doc(id).update({
      data: {
        avatarUrl: fileID
      },
      success: (res)=>{
        wx.showToast({
          title: '头像修改完成',
          icon: 'success'
        })
      }
    })
  },

  /** 点击登录 */
  tapLogin(){
    if(this.data.logined){
      return;  //如果已经登录，直接返回
    }

    wx.getUserProfile({
      desc: '获取微信用户信息以维护会员权益',
      success: (res)=>{
        console.log('获取微信用户数据', res)
        // 将res.userInfo存入data，更新UI
        this.setData({
          userInfo: res.userInfo,
          logined: true 
        })
        // 判断该用户在自家数据库中是否存在，不存在则注册
        this.queryUserState()
      },fail: (err)=>{
        console.warn('获取微信用户数据失败', err)
      }
    })
  },

  /** 查询当前用户的状态，是否在数据库users集合中存过 */
  queryUserState(){
    let db = wx.cloud.database()
    // users集合有权限设置，只能查到自己以前添加过的数据
    db.collection('users').get().then(res=>{
      console.log('查询是否注册过？', res)
      if(res.data.length==0){ // 没查到，以前没注册过
        // 执行注册业务，将res.data.userInfo存到users集合中
        this.regist()
      }else { // 查得到，以前注册过
        // 获取最新的数据，更新UI
        let userInfo = res.data[0]
        this.setData({ userInfo })
      }
    })
  }, 

  /** 将this.data.userInfo注册到users集合中 */
  regist(){
    let db = wx.cloud.database()
    db.collection('users').add({
      data: this.data.userInfo
    }).then(res=>{
      console.log('注册新用户:', res)
    })
  },

  tap2(){
    console.log('记得双击么么哒~~')
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})